package compositetype

type Point struct {
	x, y int
}

type Circle struct {
	Point  //匿名成员，也就是将Point嵌套进来
	Radius int
}

type Wheel struct {
	Circle
	Spokes int
}

func S() {
	var w Wheel
	w.x = 8
	w.y = 7 //使用匿名成员可以直接通过.x访问，而不需要 w.Point.x这样繁琐的调用

	//结构体字面量无法快速初始化，所以下面的语句是错误的
	//w = Wheel{x:8, y:7, Radius :20, Spokes :20}

	w = Wheel{Circle{Point{8, 8}, 5}, 20} //这样初始化是可以的

	w = Wheel{ //这样初始化也是可以的
		Circle: Circle{
			Point:  Point{x: 8, y: 8},
			Radius: 5,
		},
		Spokes: 20, //注意这里的逗号，以及上面Radius的逗号都是需要保留的。
	}
}
